2023/12/233193字符
运算符
算数运算符
+
(1)数学运算、字符串链接 (2)任何数据类型加字符串都等于字符串-
,*
,/
,%
,++
,--
数学运算
var a = 1;
b = a ++;
c = a + b;
console.log(a, b, c); //--> 2 1 3
var a = 1;
b = ++ a;
c = a + b;
console.log(a, b, c); //--> 2 2 4
()
(1)数学运算 (2)函数调用
x % y
y 必须是有限的和非零,否则返回 NaN ECMA 5.2.5
赋值运算符
=
,+=
,-=
,*=
,/=
,%=
a += b //--> a = a + b
比较运算符
<
,>
,<=
,>=
,==
(比较抽象的平等),!=
,===
任何值都能比较,unicode 编码与 String 类型之间可以直接比较,参考 Unicode 编码 ECMA 5.1.2 (对于包含补充字符的字符串,UTF-16代码单元值序列的字典顺序与代码点值序列的字典顺序不同)
==
运算符比较执行过程 ECMA 7.2.15
var a = '10', b = 20;
a > b //--> false Number(a) > b
'\u000A' === '\n'; //--> true
逻辑运算符
&&
,||
,!
,&
测定变量或值之间的逻辑
&&
遇真得真 全真才为真,有一个假即为假
1 && false && 2; //--> 1 //遇假则停
||
遇假得假 有一个真即为真
0 || false || 1; //--> 1
&
一般不用 前后一致则为 1,不一致为 0(与二进制有关)
1 & 2; //--> 0
1 & 1; //--> 1
1 & 3; //--> 1
三目运算符
? :
3 > 9 ? console.log("yes") : console.log("no"); //--> no
运算符优先级
// . [] () 字段访问、数组下标、函数调用及表达式分组
// ++ -- - ~ ! delete new typeof void 一元运算符、对象创建、返回数据类型、未定义值
// * / % 乘法、除法、取模
// + - 加法/字符串连接、减法
// << >> >>> 位移
// < <= > >= instanceof 小于、小于等于、大于、大于等于、instanceof
// == != === !== 等于、等于等于、严格等于、非严格等于
// & 按位与
// ^ 按位异或
// | 按位或
// && 逻辑与
// || 逻辑或
// ?: 条件
// = oP= 赋值、运算赋值
// , 多重求值